home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 August: Tool Chest / Dev.CD Aug 95 TC / Dev.CD Aug 95 TC.toast / Tool Chest / Interfaces / UniversalInterfaces 2.1B1 / AIncludes / CodeFragments.a < prev    next >
Encoding:
Text File  |  1995-04-18  |  9.2 KB  |  299 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        CodeFragments.a
  3. ;
  4. ;    Contains:    Code Fragment Manager Interfaces.
  5. ;
  6. ;    Version:    Technology:    System 7.5
  7. ;                Package:    Universal Interfaces 2.1ß1 in “MPW Prerelease” on ETO #17
  8. ;
  9. ;    Copyright:    © 1984-1995 by Apple Computer, Inc.
  10. ;                All rights reserved.
  11. ;
  12. ;    Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13. ;                stack.  Include the file and version information (from above)
  14. ;                in the problem description and send to:
  15. ;                    Internet:    apple.bugs@applelink.apple.com
  16. ;                    AppleLink:    APPLE.BUGS
  17. ;
  18. ;
  19.  
  20.     IF &TYPE('__CODEFRAGMENTS__') = 'UNDEFINED' THEN
  21. __CODEFRAGMENTS__ SET 1
  22.  
  23.  
  24.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  25.     include 'Types.a'
  26.     ENDIF
  27. ;        include 'ConditionalMacros.a'                                ;
  28.  
  29.     IF &TYPE('__FILES__') = 'UNDEFINED' THEN
  30.     include 'Files.a'
  31.     ENDIF
  32. ;        include 'MixedMode.a'                                        ;
  33. ;        include 'OSUtils.a'                                        ;
  34. ;            include 'Memory.a'                                        ;
  35.  
  36. kCFragResourceType                EQU        'cfrg'
  37. kCFragResourceID                EQU        0
  38. kCFragLibraryFileType            EQU        'shlb'
  39.  
  40. ; typedef OSType             CFragArchitecture
  41.  
  42. kPowerPCCFragArch                EQU        'pwpc'
  43. kMotorola68KCFragArch            EQU        'm68k'
  44. kAnyCFragArch                    EQU        $3F3F3F3F
  45.  
  46.     IF GENERATINGPOWERPC  THEN
  47. kCurrentCFragArch                EQU        kPowerPCCFragArch
  48.  
  49.     ENDIF
  50.     IF GENERATING68K  THEN
  51. kCurrentCFragArch                EQU        kMotorola68KCFragArch
  52.  
  53.     ENDIF
  54. ; typedef UInt32             CFragConnectionID
  55. ; typedef UInt32             CFragClosureID
  56. ; typedef UInt32             CFragContextID
  57. ; typedef UInt32             CFragContainerID
  58. ; typedef UInt32             CFragLoadOptions
  59.  
  60. kLoadCFrag                        EQU        $01                    ; Try to use existing copy, load if not found.
  61. kFindCFrag                        EQU        $02                    ; Try find an existing copy, don't load if not found.
  62. kNewCFragCopy                    EQU        $05                    ; Load a new copy whether one already exists or not.
  63. kInplaceCFrag                    EQU        $80                    ; Use data sections directly in the container.
  64.  
  65. kUnresolvedCFragSymbolAddress    EQU        0
  66.  
  67. ; typedef UInt8             CFragSymbolClass
  68.  
  69. kCodeCFragSymbol                EQU        0
  70. kDataCFragSymbol                EQU        1
  71. kTVectorCFragSymbol                EQU        2
  72. kTOCCFragSymbol                    EQU        3
  73. kGlueCFragSymbol                EQU        4
  74.  
  75. ; typedef UInt8             CFragUsage
  76.  
  77. kImportLibraryCFrag                EQU        0                    ; Standard CFM import library.
  78. kApplicationCFrag                EQU        1                    ; Macintosh application.
  79. kDropInAdditionCFrag            EQU        2                    ; Private extension to an application or library.
  80.  
  81. kIsCompleteCFrag                EQU        0                    ; A "base" fragment, not an update.
  82. kFirstCFragUpdate                EQU        1                    ; The first update, others are numbered 2, 3, ...
  83.  
  84. ; typedef UInt8             CFragLocatorKind
  85.  
  86. kMemoryCFragLocator                EQU        0                    ; Container is already addressable.
  87. kDataForkCFragLocator            EQU        1                    ; Container is in a file's data fork.
  88. kResourceCFragLocator            EQU        2                    ; Container is in a file's resource fork.
  89. kByteStreamCFragLocator            EQU        3                    ; Container is in a given file fork as a byte stream.
  90.  
  91. kCFragGoesToEOF                    EQU        0
  92.  
  93. CFragOldMemoryLocator     RECORD    0
  94. address                     ds.l   1        ; offset: $0 (0)
  95. length                     ds.l   1        ; offset: $4 (4)
  96. inPlace                     ds.b   1        ; offset: $8 (8)
  97. reserved3a                 ds.b   3        ; offset: $9 (9)        ; ! Do not use this!
  98. sizeof                     EQU *            ; size:   $C (12)
  99.                         ENDR
  100.  
  101. ; typedef struct CFragOldMemoryLocator  CFragOldMemoryLocator
  102. CFragHFSDiskFlatLocator RECORD    0
  103. fileSpec                 ds.l   1        ; offset: $0 (0)
  104. offset                     ds.l   1        ; offset: $4 (4)
  105. length                     ds.l   1        ; offset: $8 (8)
  106. sizeof                     EQU *            ; size:   $C (12)
  107.                         ENDR
  108.  
  109. ; typedef struct CFragHFSDiskFlatLocator  CFragHFSDiskFlatLocator
  110. ; ! This must have a file specification at the same offset as a data fork locator!
  111. CFragHFSSegmentedLocator RECORD    0
  112. fileSpec                 ds.l   1        ; offset: $0 (0)
  113. rsrcType                 ds.l   1        ; offset: $4 (4)
  114. rsrcID                     ds.w   1        ; offset: $8 (8)
  115. reserved2a                 ds.w   1        ; offset: $A (10)        ; ! Do not use this!
  116. sizeof                     EQU *            ; size:   $C (12)
  117.                         ENDR
  118.  
  119. ; typedef struct CFragHFSSegmentedLocator  CFragHFSSegmentedLocator
  120. CFragHFSLocator         RECORD    0
  121. where                     ds.l   1        ; offset: $0 (0)        ; Really of type CFragLocatorKind.
  122. onDisk                     ds     CFragHFSDiskFlatLocator ; offset: $4 (4) ; First so debugger shows this form.
  123.                          ORG 4
  124. inMem                     ds.l   3        ; offset: $4 (4)
  125.                          ORG 4
  126. inSegs                     ds.l   3        ; offset: $4 (4)
  127.                          ORG 16
  128. sizeof                     EQU *            ; size:   $10 (16)
  129.                         ENDR
  130.  
  131. ; typedef struct CFragHFSLocator  CFragHFSLocator
  132. ; typedef CFragHFSLocator     *CFragHFSLocatorPtr
  133. ; -------------------------------------------------------------------------------------------
  134. ; The parameter block passed to fragment initialization functions.  The locator and name
  135. ; pointers are valid only for the duration of the initialization routine.  I.e. if you want
  136. ; to save the locator or name, save the contents, not the pointers.  Initialization routines
  137. ; take one parameter, a pointer to the parameter block, and return a success/failure result.
  138. ; ! Note that the initialization function returns an OSErr.  Any result other than noErr will
  139. ; ! cause the entire load to be aborted at that point.
  140. CFragInitBlock             RECORD    0
  141. contextID                 ds.l   1        ; offset: $0 (0)
  142. closureID                 ds.l   1        ; offset: $4 (4)
  143. connectionID             ds.l   1        ; offset: $8 (8)
  144. fragLocator                 ds.l   4        ; offset: $C (12)
  145. libName                     ds.l   1        ; offset: $1C (28)
  146. reserved4a                 ds.l   1        ; offset: $20 (32)        ; ! Do not use this!
  147. reserved4b                 ds.l   1        ; offset: $24 (36)        ; ! Do not use this!
  148. reserved4c                 ds.l   1        ; offset: $28 (40)        ; ! Do not use this!
  149. reserved4d                 ds.l   1        ; offset: $2C (44)        ; ! Do not use this!
  150. sizeof                     EQU *            ; size:   $30 (48)
  151.                         ENDR
  152.  
  153. ; typedef struct CFragInitBlock  CFragInitBlock
  154. ; typedef CFragInitBlock     *CFragInitBlockPtr
  155. ; typedef CFragInitFunction  *CFragInitFunctionPtr
  156. ; typedef CFragTermRoutine     *CFragTermRoutinePtr
  157. ; §
  158. ; ===========================================================================================
  159. ; Routines
  160. ; ========
  161. ;
  162. ; pascal OSErr GetSharedLibrary(ConstStr63Param libName, OSType archType, CFragLoadOptions loadFlags, CFragConnectionID *connID, Ptr *mainAddr, Str255 errMessage)
  163. ;
  164.     IF ¬ GENERATINGCFM THEN
  165.         Macro
  166.         _GetSharedLibrary
  167.             move.w    #$0001,-(sp)
  168.             dc.w     $AA5A
  169.         EndM
  170.     ELSE
  171.         IMPORT_CFM_FUNCTION    GetSharedLibrary
  172.     ENDIF
  173.  
  174. ;
  175. ; pascal OSErr GetDiskFragment(const FSSpec *fileSpec, UInt32 offset, UInt32 length, ConstStr63Param fragName, CFragLoadOptions loadFlags, CFragConnectionID *connID, Ptr *mainAddr, Str255 errMessage)
  176. ;
  177.     IF ¬ GENERATINGCFM THEN
  178.         Macro
  179.         _GetDiskFragment
  180.             move.w    #$0002,-(sp)
  181.             dc.w     $AA5A
  182.         EndM
  183.     ELSE
  184.         IMPORT_CFM_FUNCTION    GetDiskFragment
  185.     ENDIF
  186.  
  187. ;
  188. ; pascal OSErr GetMemFragment(void *memAddr, UInt32 length, ConstStr63Param fragName, CFragLoadOptions loadFlags, CFragConnectionID *connID, Ptr *mainAddr, Str255 errMessage)
  189. ;
  190.     IF ¬ GENERATINGCFM THEN
  191.         Macro
  192.         _GetMemFragment
  193.             move.w    #$0003,-(sp)
  194.             dc.w     $AA5A
  195.         EndM
  196.     ELSE
  197.         IMPORT_CFM_FUNCTION    GetMemFragment
  198.     ENDIF
  199.  
  200. ;
  201. ; pascal OSErr CloseConnection(CFragConnectionID *connID)
  202. ;
  203.     IF ¬ GENERATINGCFM THEN
  204.         Macro
  205.         _CloseConnection
  206.             move.w    #$0004,-(sp)
  207.             dc.w     $AA5A
  208.         EndM
  209.     ELSE
  210.         IMPORT_CFM_FUNCTION    CloseConnection
  211.     ENDIF
  212.  
  213. ;
  214. ; pascal OSErr FindSymbol(CFragConnectionID connID, ConstStr255Param symName, Ptr *symAddr, CFragSymbolClass *symClass)
  215. ;
  216.     IF ¬ GENERATINGCFM THEN
  217.         Macro
  218.         _FindSymbol
  219.             move.w    #$0005,-(sp)
  220.             dc.w     $AA5A
  221.         EndM
  222.     ELSE
  223.         IMPORT_CFM_FUNCTION    FindSymbol
  224.     ENDIF
  225.  
  226. ;
  227. ; pascal OSErr CountSymbols(CFragConnectionID connID, long *symCount)
  228. ;
  229.     IF ¬ GENERATINGCFM THEN
  230.         Macro
  231.         _CountSymbols
  232.             move.w    #$0006,-(sp)
  233.             dc.w     $AA5A
  234.         EndM
  235.     ELSE
  236.         IMPORT_CFM_FUNCTION    CountSymbols
  237.     ENDIF
  238.  
  239. ;
  240. ; pascal OSErr GetIndSymbol(CFragConnectionID connID, long symIndex, Str255 symName, Ptr *symAddr, CFragSymbolClass *symClass)
  241. ;
  242.     IF ¬ GENERATINGCFM THEN
  243.         Macro
  244.         _GetIndSymbol
  245.             move.w    #$0007,-(sp)
  246.             dc.w     $AA5A
  247.         EndM
  248.     ELSE
  249.         IMPORT_CFM_FUNCTION    GetIndSymbol
  250.     ENDIF
  251.  
  252.     IF OLDROUTINENAMES  THEN
  253. ; typedef CFragConnectionID  ConnectionID
  254. ; typedef CFragLoadOptions     LoadFlags
  255. ; typedef CFragSymbolClass     SymClass
  256. ; typedef CFragOldMemoryLocator  MemFragment
  257. ; typedef CFragHFSDiskFlatLocator  DiskFragment
  258. ; typedef CFragHFSSegmentedLocator  SegmentedFragment
  259. ; typedef CFragHFSLocator     FragmentLocator
  260. ; typedef CFragHFSLocatorPtr  FragmentLocatorPtr
  261. ; typedef CFragInitBlock     InitBlock
  262. ; typedef CFragInitBlockPtr  InitBlockPtr
  263. ; typedef CFragInitFunction  ConnectionInitializationRoutine
  264. ; typedef CFragTermRoutine     ConnectionTerminationRoutine
  265.  
  266. kPowerPCArch                    EQU        kPowerPCCFragArch
  267. kMotorola68KArch                EQU        kMotorola68KCFragArch
  268. kAnyArchType                    EQU        kAnyCFragArch
  269. kNoLibName                        EQU        0
  270. kNoConnectionID                    EQU        0
  271. kLoadLib                        EQU        kLoadCFrag
  272. kFindLib                        EQU        kFindCFrag
  273. kLoadNewCopy                    EQU        kNewCFragCopy
  274. kUseInPlace                        EQU        kInplaceCFrag
  275. kCodeSym                        EQU        kCodeCFragSymbol
  276. kDataSym                        EQU        kDataCFragSymbol
  277. kTVectSym                        EQU        kTVectorCFragSymbol
  278. kTOCSym                            EQU        kTOCCFragSymbol
  279. kGlueSym                        EQU        kGlueCFragSymbol
  280. kInMem                            EQU        kMemoryCFragLocator
  281. kOnDiskFlat                        EQU        kDataForkCFragLocator
  282. kOnDiskSegmented                EQU        kResourceCFragLocator
  283. kIsLib                            EQU        kImportLibraryCFrag
  284. kIsApp                            EQU        kApplicationCFrag
  285. kIsDropIn                        EQU        kDropInAdditionCFrag
  286. kFullLib                        EQU        kIsCompleteCFrag
  287. kUpdateLib                        EQU        kFirstCFragUpdate
  288. kWholeFork                        EQU        kCFragGoesToEOF
  289. kCFMRsrcType                    EQU        kCFragResourceType
  290. kCFMRsrcID                        EQU        kCFragResourceID
  291. kSHLBFileType                    EQU        kCFragLibraryFileType
  292. kUnresolvedSymbolAddress        EQU        kUnresolvedCFragSymbolAddress
  293.  
  294. kPowerPC                        EQU        kPowerPCCFragArch
  295. kMotorola68K                    EQU        kMotorola68KCFragArch
  296.  
  297.     ENDIF
  298.     ENDIF ; __CODEFRAGMENTS__
  299.